#ifndef _HeaderInfo_H_
#define _HeaderInfo_H_

/******************************************************************************

Description:
  HeaderInfo class keeps header table related information.

Author: Tayfun Sen
Website: http://blog.tayfunsen.com
 
 *****************************************************************************/

#include "Node.hpp"
// Boost libraries for serializing.
#include <boost/tokenizer.hpp>
#include <boost/archive/tmpdir.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/serialization/export.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/utility.hpp>
#include <boost/serialization/hash_map.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/string.hpp>
#include <boost/mpi.hpp>


class HeaderInfo {
    public:
        HeaderInfo(string argItem = "", Node * f = NULL, Node * l = NULL) : first(f), last(l), item(argItem), skip(false)  { };

        //*****************************************
        //************ data ***********************
        // No need to make these private. They only function like a struct.
        Node * first, * last;
        string item;
        bool skip;
        //************ end data *******************

    private:
        friend class boost::serialization::access;
        template<class Archive>
            void serialize(Archive & ar, const unsigned int version) {
                ar & first;
                ar & last;
                ar & item;
                ar & skip;
            }
};


// We don't need to track HeaderInfo instances because there won't be any
// duplicates.
BOOST_CLASS_TRACKING(HeaderInfo, boost::serialization::track_never)

#endif
